home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MacWorld 1996 March
/
MacWorld 03:96.toast
/
Online
/
I-Spy scripts
/
Filter and concatenate HTML.pl
< prev
next >
Wrap
Perl Script
|
1995-12-24
|
3KB
|
110 lines
#!/usr/bin/perl
# Filter and concatenate HTML.pl
# This script appends lines from one file to another, ignoring those lines that match a filter string
# The output is an HTML document
#
# 12/24/95 Version 1.1.1
# This script is free, public domain, no strings attached.
# Igor Livshits <igorl@uiuc.edu>
$openToAppend= ">> ";
$macPathDelimiter= ":";
$unixPathDelimiter= "/";
$argumentCounter= 0;
$newLineDelimiter= "\n";
$omitFilterTag= "#-";
$keepFilterTag= "#+";
$true= (1 == 1);
$false= (1 == 0);
$htmlListItemLeader= "<LI> <A HREF= \"";
$htmlListItemMiddle= "\">";
$htmlListItemTrailer= "</A>" . $newLineDelimiter;
# Read in the arguments passed to us from the AppleScript agent
#
$workingDirectory= $ARGV[$argumentCounter++] . $macPathDelimiter;
$dataDirectory= $ARGV[$argumentCounter++] . $macPathDelimiter;
$linesAddedFile= $ARGV[$argumentCounter++];
$filtersFile= $ARGV[$argumentCounter++];
$newFilesFile= $ARGV[$argumentCounter++];
$urlFile= $ARGV[$argumentCounter++];
# Read the URL
#
open(urlFile, $dataDirectory . $urlFile) || die "Cannot open $urlFile: $!";
$rootURL= <urlFile>;
if ($rootURL =~ /$newLineDelimiter$/) { chop ($rootURL); }
close(urlFile);
# Classify the filters
#
open(filtersFile, $dataDirectory . $filtersFile) || die "Cannot open $filtersFile: $!";
$tagLine= <filtersFile>;
if ($tagLine eq $keepFilterTag)
{
$omitMatches= $false; # filter matches are kept, the rest is dropped
}
else # default condition
{
$omitMatches= $true; # filter matches are dropped, the rest is kept
if ($tagLine ne $omitFilterTag)
{
seek(filtersFile, 0, 0); # restart at the beginning of the file as the first line was not a tag
}
}
# Read the filters
#
@filters= (); # clear the array
while (<filtersFile>)
{
if (/$newLineDelimiter$/) { chop; }
if ($_) { push(@filters, $_); } # only add non-blank filters
}
close(filtersFile);
# Set up input and output files
#
open(linesAddedFile, $dataDirectory . $linesAddedFile) || die "Cannot open $linesAddedFile: $!";
open(newFilesFile, $openToAppend . $workingDirectory . $newFilesFile) || die "Cannot open $newFilesFile: $!";
# Filter and add valid lines
#
while(<linesAddedFile>)
{
if (/$newLineDelimiter$/) { chop; }
$aLine= $_;
$match= $false;
foreach $filter (@filters)
{
if ($aLine =~ /$filter/)
{ # we have a match
$match= $true;
last;
}
}
if ($omitMatches != $match)
{ # construct a list item using the path for the URL and the last leaf for the name
@pathLeaves= split($unixPathDelimiter, $aLine);
$aLinkName= pop (@pathLeaves);
$aLink= $htmlListItemLeader . $rootURL . $aLine . $htmlListItemMiddle . $aLinkName . $htmlListItemTrailer;
print (newFilesFile $aLink);
}
}
# Clean up
#
close(linesAddedFile);
close(newFilesFile);